1. Field of the Invention
This invention relates to the field of data processing. More particularly, this invention relates to data processing of the type in which multiply-accumulate instructions are used to specify that a first operand should be multiplied by a second operand and then a third operand added to yield the result. The operands are stored within data processing registers from a bank of data processing registers within the system.
2. Description of the Prior Art
It is known to provide data processing systems having a multiply-accumulate instruction within their instruction set. An example of such a system is the ARM6 integrated circuit microprocessor produced by Advanced RISC Machines Limited. The ARM6 microprocessor incorporates a multiply-accumulate instruction For multiplying a first 32-bit operand by a second 32-bit operand and then adding a third 32-bit operand. The registers containing the three input operands to this instruction together with the register in which the results should be written are specified by fields within the multiplier-accumulate instruction. As an example, the two 32-bit operands to be multiplied together could be in Register 5 and Register 6, with the accumulate value in Register 10 and the result being written into Register 2.
It is desirable that a data processing system should be able to specify the data processing operation required by a user with the minimum number of instructions. This results in smaller program sizes and generally faster and more efficient operation. However, a problem in providing such more sophisticated data processing operations in single instructions is the amount of information that needs to be specified by the instruction. More particularly, if an instruction utilizes multiple data processing registers as resources to execute that instruction, then the identity of those registers must be specified in the instruction. This can use an unacceptable amount of the bit space within the instruction. A further problem with such sophisticated instructions utilizing a relatively large number of the data processing registers within a system is that efficient compilation of a program becomes more difficult as the finite data processing register resources must be shared between the many different operands in use.